Multiple processing units are able to process different computational instruction entities (such as threads, tasks, processes, applications, etc.) simultaneously. As such, multiple processing units can execute more instructions in a given period of time as compared to a single processing unit. During the execution of instructions, the multiple processing units share resources such as on-chip communication buses, memory controllers, caches, I/O devices, and the like. At times, instruction entities executing on different processing units interfere with one another due to these shared resources even when the different instruction entities are completely independent from one another. In certain applications, a worst case or longest execution time for the executing instruction entities must be known for the different instruction entities that execute on each processor. However, it is difficult to determine the worst case execution time due to cross-processing unit interference between executing instruction entities due to shared resources. The challenge of determining the worst case execution time due to resource conflicts inhibits certain systems from taking advantage of the full performance benefits presented by multi-processing unit processors, and also prevents them from being used in certain safety-critical environments such as those requiring a high degree of execution predictability.
Further, in certain systems, executing instruction entities are subject to certain scheduling requirements. These scheduling requirements include rules that must be satisfied for the proper execution of the multiple instruction entities. In certain systems, these scheduling requirements include constraints that require instruction entities to execute in parallel, not in parallel, or in a particular order.